Julia 作用域
阐述
作用域是查找变量所对应的值的范围。在 Julia 中作用域分为两种:
全局作用域
每个模块都引入了一个全局作用域,与其他模块的作用域分离,并且可以通过 Julia 模块的导入功能来导入其他模块中的变量,但不能修改。
在全局作用域中的一段表达式中可以用 local x = ...
语法定义变量,这样它不会影响全局作用域。
局部作用域
很多语法结构都进一步引入了局部作用域,局部作用域继承所在的全局作用域和其他局部作用域中的变量。但是,当对变量赋值时,局部作用域会创建新的变量,除非以下三个条件均满足:
- 赋值所在的作用域以及所有的父作用域均为软局部作用域
- 处于 REPL 中
- 全局变量已定义
这种情况下会对全局变量修改。
Julia 的作用域是词法作用域
在 Julia 中作用域为词法作用域,即函数的作用域不继承调用者的作用域,而是函数定义的作用域。
实例
结构 | 作用域类型 | 允许出现在 |
---|---|---|
Julia 模块 | 全局 | 全局 |
Julia 复合类型 | 软局部 | 全局 |
Julia 循环、Julia 异常处理 | 软局部 | 全局或局部 |
Julia 宏 | 硬局部 | 全局 |
Julia 函数、Julia do 块 |